package Cajero.Interfaz;

import BD.*;
import java.awt.Image;
import java.awt.event.*;
import javax.swing.JOptionPane;

/**
 *
 * @author Yalile Bermudes
 */
public class ControladorCajero implements ActionListener {

    Factura ventanaFactura;
    RegistrarCliente cliente;
    GestorCliente infoCliente;
    GestorFactura infoFactura;
    GestorProducto infoProducto;

    public ControladorCajero(Factura ventanaFactura) {
        this.ventanaFactura = ventanaFactura;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        infoCliente = new GestorCliente();
        infoFactura = new GestorFactura();
        infoProducto = new GestorProducto();
        
        if (e.getActionCommand().equals("Salir")) {
            System.exit(0);
        }

        if (e.getSource() == ventanaFactura.getBoton()) {
            cliente = RegistrarCliente.getInstance();
            ventanaFactura.SetControlador(this);
            cliente.setVisible(true);
        }

        if (e.getSource() == ventanaFactura.getBotonBuscar()) {
            String doc = ventanaFactura.getDocumento();
            boolean bool = infoCliente.buscarCliente(doc);
            if (bool) {
                String nom = infoCliente.getNombre() + " " + infoCliente.getApellido();
                String dir = infoCliente.getDireccion();
                ventanaFactura.setNombreCliente(nom);
                ventanaFactura.setDireccion(dir);
            } else {
                JOptionPane.showMessageDialog(null, "No se encuentra registrado");
            }

        }

        if (e.getSource() == ventanaFactura.getBotonBuscarProducto()) {
            String nombre;
            String codigo;
            String precio;
            String descripcion;
            Image imagen;
            
            codigo=ventanaFactura.getProducto();
            if(codigo.equals("")){
                JOptionPane.showMessageDialog(null, "Por favor, digite un codigo de producto");
            }else{
            
            if(infoProducto.consultarProducto(codigo)){//Me falta ensayarlo, ya que no tengo datos para poder realizarlo. -_-
                imagen = infoProducto.getImagen();
                nombre = infoProducto.getNombre();
                precio = infoProducto.getPrecio();
                descripcion = ""+infoProducto.getDescripcion()+"\n" +"Tipo: "+infoProducto.getTipo()+"\n"+
                        "Color: "+infoProducto.getColor();
                ProductoBuscado producto = new ProductoBuscado();
                producto.setImagen(imagen);
                producto.setCodigo(codigo);
                producto.setNombre(nombre);
                producto.setDetalles(descripcion);
                
                
                producto.setVisible(true);
            }else{
                JOptionPane.showMessageDialog(null, "El producto que esta buscando, no se encuentra registrado");
            }
            }
            

        }
        if (e.getSource() == ventanaFactura.getBontonAgregarTabla()) {        
            String codigo = ventanaFactura.getProducto();
            int cantidad = ventanaFactura.getCantidad();
            String nombre;
            String precio;
            String descuento;
            String IVA;
            if(codigo.equals("")||cantidad==0){
                JOptionPane.showMessageDialog(null, "Por favor, debe digitar un codigo de producto y una cantidad");
            }else{
                if(infoProducto.consultarProducto(codigo)){//Me falta ensayarlo, ya que no tengo datos para poder realizarlo. -_-
                nombre = infoProducto.getNombre();
                precio = infoProducto.getPrecio();
                descuento = infoProducto.getDescuento();
                IVA = infoProducto.getIva();
                //Un metodo que calcule el precio total y otro que calcule el precio con Iva.
            }
            }
        }

        if (e.getSource() == ventanaFactura.getEliminarProducto()) {        
            ventanaFactura.setProductoSeleccionado();
        }

        //Inicia los Eventos de RegistrarCliente
        
    }


  
    
    int precioTotal(){
        int precio=0;
        return precio;
    }
    int precioConIva(){
        int precio=0;
        return precio;
    }
}
